home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
BBS Toolkit
/
BBS Toolkit.iso
/
qbbs
/
qkecc100.zip
/
QKECC100.DOC
< prev
next >
Wrap
Text File
|
1990-11-28
|
17KB
|
414 lines
QKECC: QuickBBS Embedded Code Compiler - Version 1.00
Copyright (C) 1990 by David B. Thompson; All Rights Reserved.
WHAT IS IT?
-----------
QKECC and QKECU are a pair of programs for creating and maintaining text
files used to run a QuickBBS bulletin board system. QKECC "compiles" QBBS
embedded codes (used to display system and user information) and ANSI color
and screen control codes from keywords (listed below). The resulting files
may be used as menus (using an auto-executed type 40 command) or simply
displayed as text files containing user or system information (using a type
5, 40 or 45 command). QKECU reverses the process, that is, it produces a
file containing keywords translated from the embedded codes and ANSI escape
sequences, plus any text contained in the file.
LICENSE:
--------
This is a shareware program. Sysops are welcome to use this program
without compensation, but contributions not to exceed $5.00 are welcome.
Let your conscience be your guide. All monies will be used to support my
BBS. In any event, please distribute this program by sharing it through
bulletin board systems or other means.
If you are a user residing outside the United States, please send me a
postcard of your town or surrounding countryside. I got this idea from
Stig Jacobsen (author of FileDoor) and think it is really neat! I'm sure
my kids will appreciate cards from around the world <grin>!
Under no circumstances is the program to be distributed for a fee (this
includes public domain libraries that charge "copying costs" for software
distribution) without prior arrangements with the author. Bulletin board
systems which charge a fee for normal access may distribute this program.
Similarly, no modified version of the program may be distributed. Finally,
do not distribute the software under any name but QKECC???.(ZIP ARC LZH or
whatever), that is, you may rearchive the software, but do not change the
name or version number.
DISCLAIMER:
-----------
This program is warranted to do no more than take up space on your disk. In
using this program, you accept complete responsibility for anything that
happens to your system and agree to release me from any and all liability.
Every effort has been made to provide bug-free software, but there is no
warranty as to suitability, merchantability or functionality. What do you
expect for 0 to 5 dollars?
PAYMENT:
--------
Contributions for the software may be directed to:
David B. Thompson
204 Brookdale
Carriere, MS 39426 USA
QKECC PROGRAM USE:
------------------
Use of QKECC is very simple. At the command line, enter the following
command:
QKECC Input.Qec Output.A?? /a /o
where:
Input.Qec is the file containing QBBS and ANSI keywords.
Output.Qec is the file containing QBBS and/or ANSI control codes.
/a is a switch that enables generation of ANSI codes.
/o is a switch that enables automatic overwriting of
and existing output file.
The file, input.qec, contains text and command keywords you provide. The
file output.a?? contains your text, with QBBS embedded command codes and
ANSI color or screen control codes. Maximum line length of the input and
output files is 255 characters. The number of lines in the file is
unlimited.
The /a is a switch that turns on generation of ANSI color and screen
control codes. If you don't specify the ANSI switch, then ANSI keywords
are ignored and are not placed in the output file. In this case,
straight ASCII text will be passed through, with the substitution of the
QBBS control codes for appropriate keywords. Note that you should not
embed ANSI characters in a *.ASC file because QBBS sends *.ASC files to
users who do not use ANSI.SYS. Be forewarned, you'll get lots of grief
from your users if you make this mistake!
The /o switch turns overwrite mode on. Be careful, because the program
won't ask you if it's acceptable to write over an existing output file.
The purpose of this switch is to allow you to construct a make file for
all your text files.
If you don't enter the names on the command line, then you will prompted
for them. If you should specify the same filename for both input and
output, you will be warned and program execution will cease.
All commands are delineated by placing them in brackets '[' and ']'. No
spaces are allowed between the brackets and the command text. Unmatched
brackets are not filtered, but passed through the program as is.
Unrecognized commands are also passed through the program. The program is
not case sensitive.
QKECU PROGRAM USE:
------------------
To decompile a text file, enter:
QKECU Input.a?? Output.Qec
The file, Output.Qec, will contain the QBBS keywords and ANSI keywords
corresponding to the codes found in the input.a?? file. You may modify
the file and recompile the file using QKECC.
WARNING:
--------
Be careful when decompiling ASC files. If you have an existing .QEC
file which contains ANSI keywords and decompile a .ASC file and
overwrite it, then your ANSI keywords will be lost! You get a chance to
abort an overwrite, but you should still be careful. (A backup of your
.QEC files is probably an *EXCELLENT* idea...)
EXAMPLES:
---------
In the file MAIN.QEC, you will find my main menu file, uncompiled. This
file is provided to give you an example to follow. You can (and should)
play with this a little to give you a feel for how the compiler and
decompiler work.
If you use a make utility for programming purposes, you can set up a
dependency file for QKECC, and maintain your text files and menus very
easily. This is probably one of the most powerful ways to apply QKECC.
COMMAND LIST (from QBBS version 2.64):
--------------------------------------
QBBS
Command Meaning
------- -------
PAUSE Pause and wait for Enter.
ABORTOFF Turn 'S' aborts off.
ABORTON Turn 'S' aborts on.
MOREON Turn 'more' on.
MOREOFF Turn 'more' off.
BELL Ring the user's bell.
CLS Clear the screen.
USERNAME Display full user name.
CITYSTAT Display user's city and state.
PASSWORD Display user's password.
BUSPHONE Display user's business/data phone number.
HOMPHONE Display usre's home/voice phone number.
LASTDATE User's last logon date.
LASTTIME User's last logon time.
AFLAGS Display user's A flags.
BFLAGS Display user's B flags.
CFLAGS Display user's C flags.
DFLAGS Display user's D flags.
CREDIT Display user's net mail credit.
POSTS User's number of message posts.
MESSREAD Display user's high read message.
SECLVL Display user's security level.
LOGONS User's number of times logged on.
UPLOADS User's number of uploads.
UPLDK User's uploads in Kbytes.
DNLOADS User's number of downloads.
DNLDK User's downloads in Kbytes.
ELAPTIME Display time used this call.
SCNLGTH Display user's screen length.
FNAME User's first name.
ANSI Show the state of the ANSI graphics toggle.
MORE Show the state of the more toggle.
SCNCLR Show the state of the screen clear codes toggle.
FSEDIT Show the state of the full screen editor toggle.
CALLS Display number of calls on the system.
LASTCALL Display last caller's name.
ACTMESS Show number of active messages.
LOWMESS Display low message number.
HIGHMESS Display high message number.
PAGES Display the number of sysop pages the user has made.
FULLDOW Show the full day-of-week.
NOUSERS Display the total number of users.
TIME24 Display current time in 24hr format.
DATE Display current date.
CONMIN Show user's minutes of connect time.
CONSEC Show user's seconds of connect time (fractional minutes).
MINUSED Display user's number of minutes used.
SECUSED Display user's number of seconds used.
MINREM Show user's remaining minutes.
SECREM Show user's remaining seconds.
TIMELIM Show user's time daily time limit.
BAUD Display user's current baud rate.
ABDOW Display abbreviated day-of-week.
DNLIMIT Show user's download limit (for the day).
TILEVENT Display number of minutes until the next system event.
TIMEVENT Display the time of the next system event.
TERMINAT End current call.
ANSI
Command Meaning
------- -------
CLRSCN Clear the screen.
SAVECSR Save the cursor position.
RESTCSR Restore the cursor postion.
UP(x) Move the cursor up x rows.
DOWN(x) Move the cursor down x rows.
RIGHT(x) Move the cursor right x columns.
LEFT(x) Move the cursor left x columns.
HOME Send the cursor home to 1,1.
BLINK Make subsequent text blink.
REVERSE Make subsequent text reverse video (dark on light).
NORMAL Make subsequent text normal video.
GOTOXY(x,y) Send the cursor to row x and column y.
CLREOL Clear to end of line.
HIGH Makes the following color "bright."
RESET Restores the normal grey on black colors of DOS.
RED Red foreground.
YELLOW Yellow foreground.
MAGENTA Magenta foreground.
WHITE White foreground.
BLACK Black foreground.
GREEN Green foreground.
BLUE Blue foreground.
CYAN Cyan foreground.
REDBK Red background.
YELLOWBK Yellow background.
MAGENTBK Magenta background.
WHITEBK White background.
BLACKBK Black background.
GREENBK Green background.
BLUEBK Blue background.
CYANBK Cyan background.
Other
Command Meaning
------- -------
INCLUDE Include the contents of the file defined by the filename
immediately following the INCLUDE command. Succeeding
text (if any) in the original file is appended to that from
the include file (if any). In-line includes are
supported. Nested includes are not supported.
Example:
[INCLUDE C:\TEXT\SECLEVEL.INC ] would cause the file seclevel.inc to be
included in the output file. If the file doesn't exist, then the INCLUDE
command is ignored.
ERRORS
------
Erroneous embedded or ANSI codes are ignored. To facilitate debugging, the
code in error is left embedded in the output stream. A quick scan of the
output file should allow you to find any errors. If an include file is not
found, then the include command is ignored.
As of version 0.33, THEDRAW screens can be decompiled by QKECU. However,
before they can be recompiled using QKECC, some hand tuning will be
required. This occurs because THEDRAW fills each line (255 bytes) with
codes. The decompiled codes then exceed 255 bytes because the keywords are
longer than the codes they represent. So, I was forced to include an CR/LF
combination to keep line lengths under 255 bytes. Sorry about this, and
I'll fix it if I can.
CREDITS:
--------
QuickBBS is copyrighted by Adam Hudson.
This program is written in Turbo Pascal 5.5, a trademark of Borland
International.
The idea for this program came from two sources: OECC, the OPUS embedded
command compiler, and QECC, the QuickBBS Embedded Code Compiler produced
by Dave Kerley of Turbo-Soft.
I appreciate the efforts of the beta testers: Mark Howard (Rivendell) and
Steve Gabrilowitz (aka Captain Kirk of NCC-1701). Mark Howard suggested
the idea of the code decompiler. Bill Kraski also had a hand in the
beta testing of this program.
BUG REPORTS:
------------
If you find a bug, send me netmail at 1:390/2.1 or write to me at the
above address.
Please be sure to include as complete a description of the circumstances
as you can. A description of your hardware/software configuration will
also be helpful. Please include the error number and address, i.e.,
RunTime Error ??? at 0000:0000 (you fill in the numbers!), if
appropriate. I prefer to receive a file containing the text on which the
program bombed so I can reproduce the problem.
COMMENTS ON MENU DESIGN:
------------------------
When designing screens, I suggest you start out with a mockup. Use a
text editor (such as QEdit) to do all the layout of your screens, put in
boxes, draw pictures of the menu trees, and so forth. You should tinker
with these text files until you have a good idea of how you want your
screens to look.
Then, WITH A COPY of your basic layout, insert the keywords for colors
and QBBS commands. You can use QKECC to compile the screens and then
TYPE them to see how they will look. For ANSI screens, be sure you have
ANSI.SYS, or one of the excellent replacements, loaded in your config.sys
file. When you get close to your goal, fire up your menu editor and
create the control portion of your menus. Fire up QBBS and take a look
at your results.
Be sure to retain your original mockup. If you don't like the results
of your work, you can go back and modify your original ideas until you
get a set of screens that satisfy you. Expect to make several trials
before arriving at a finished product.
There are a couple of principles you should follow. First, never leave
the user without a way to the top (or main) menu. With complicated menu
topologies, it is very easy to lose your way and get frustrated. If
this happens, your will get a lot of hangups and few frequent callers.
Second, show the user the path they used to get to the current menu. I
use names and arrows to indicate the path at the top left of my screens.
I've seen some very nice trees on a couple of boards; you could use
these too.
Third, grouping is important. Use location to group related commands.
On my main menu (see the example), I've grouped the file, system and
mail commands into thirds of the screen. That way, the user can find
the command they want and execute it without hunting all over the
screen.
Fourth, use mnemonic keys whenever possible. This aids remembering the
commands and helps limit the amount of time required to execute the
desired function. The hot keys concept of QBBS is very attractive (it
is one of my favorite features) because it supports the power user.
Fifth, use color to delineate your menus for color callers. With care,
you can also support your monochrome callers because some colors are
rendered as high intensity on mono screens.
It takes some fine tuning the get a menu structure that you like
(believe me, expect to spend some time at it). With the general
guidelines above, you should be able to construct some fine menus if you
apply yourself.
QUESTIONS AND COMMENTS:
-----------------------
Send your comments, suggestions and compliments to me at the ground
address above or via Fidonet at node 1:390/2.1. Save us both time and
aggravation by sending your complaints to NUL.
HISTORY:
--------
6/30/89 - Version 0.10. This was the original beta version. Just a Plain
Jane keyword compiler.
7/09/89 - Version 0.21. This beta included ANSI screen control and color
codes. It also included a decompiler which created keywords from
the control codes and ANSI escape sequences produced by the compiler.
9/03/89 - Version 0.30. This beta eliminated the need for both ANSI and
ASCII versions of text files to be maintained because the /a
paramter was added to allow generation of ANSI codes. The
include command was implemented and the new QBBS 2.04 terminate
call embedded command was supported.
9/04/89 - Version 0.31. This beta added code to put the input and output
file names on the screen. I found this helpful when using MAKE
to compile my text screens.
9/23/89 - Version 0.32. This beta killed a bug in the include file
routine, added code to allow in-line includes, added the /o
overwrite switch and some general clean-up of the code.
10/01/89 - Version 0.33. This beta patched a bug in the decompiler which
caused the compiler to die when recompiling certain files. The
bug no longer occurs, but the compiled screens still aren't
quite right. Please see the text. Also, the TERMINAT current
call command was added to the decompiler. Somehow, this command
was overlooked in earlier versions. This is the first
general release.
04/15/90 - Version 0.36. All RA support has been removed because a separate
product has been generated for that software. Also, support for
the full screen editor command has been added.
11/28/90 - Version 1.00. Fixed a bug in the CLREOL output. The code was
generating an ESC[k instead of the correct ESC[K.